package server;

import java.net.*;
import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main {

    public static void main(String[] args) {

        Thread t;
        
        ServerSocket serv = null;
        Socket s = null;

        String option;
        String nome;
        ArrayList<Lista> listas;
        String mensagem = "";

        listas = new ArrayList<Lista>();

       while (true) {
            try {
                
                serv = new ServerSocket(10000,10);
                s = serv.accept();
                
                DataInputStream in = new DataInputStream(s.getInputStream());
                DataOutputStream out = new DataOutputStream(s.getOutputStream());

                option = in.readUTF();
                
                if (option.contains("Escritor")) {
                    AtendeEscritor Escritor = new AtendeEscritor(s,listas);
                    System.out.println(option);
                    t = new Thread(Escritor);
                    t.start();
                    try {
                         t.join();
                    } catch (InterruptedException ex) {
                        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                    } 
                } else if (option.contains("Leitor")) {
                    AtendeLeitor Leitor = new AtendeLeitor(s,listas);
                    System.out.println(option);
                    t = new Thread(Leitor);
                    t.start();
                    try {
                         t.join();
                    } catch (InterruptedException ex) {
                        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                    } 
                }         

            } catch (Exception e) {

                System.out.println("Algum problema ocorreu para criar ou receber o socket.");
                System.out.println(e.toString());

            } finally {
                try {
                    s.close();
                    serv.close();
                } catch (IOException e) {
                }
            }
        }

    }
}



